package com.example.springboot.config.prop.propertysource;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * @author wangsh
 * @Des: PropertySource使用，将配置属性加载到对应的实体类
 * 方式一：
 * 通过@PropertySource注解方式引入属性配置文件，在属性字段上使用@Value("${key}")取出值，并赋值给指定的属性字段
 * <p>
 * 方式二：
 * 通过@PropertySource注解方式引入属性配置文件，然后使用spring自带环境变量Environment取出属性值
 * <p>
 * 方式三：
 * 通过ognl解析属性，@PropertySource("file:${app.home}/app.properties")
 * <p>
 * 方式四：
 * 同时包含多个文件：
 * @PropertySource({ "classpath:config.properties",
 * "classpath:db.properties" //if same key, this will 'win'
 * })
 * <p>
 * 方式五：
 * 5.Spring4中对这个注解进行了功能增强，增加了@PropertySources注解，相当于其父标签，下面可以包括多个子PropertySource注解，示例如下：
 * @PropertySources({
 * @PropertySource("classpath:config.properties"),
 * @PropertySource("classpath:db.properties") })
 * @date 2018/6/6 0006下午 4:21
 */
@Configuration
@PropertySource("classpath:propertySource.properties")
public class MysqlConnect {

    @Value("${datasource.dirverName}")
    private String dirverName;

    @Value("${datasource.url}")
    private String url;

    @Value("${datasource.name}")
    private String name;

    @Value("${datasource.password}")
    private String password;

    public String getDirverName() {
        return dirverName;
    }

    public void setDirverName(String dirverName) {
        this.dirverName = dirverName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "MysqlConnect{" +
                "dirverName='" + dirverName + '\'' +
                ", url='" + url + '\'' +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
